/**
 *====================================================
 * 文件名称: PushMessageUtil.java
 * 修订记录：
 * No    日期				作者(操作:具体内容)
 * 1.    2016年1月13日			chenxy(创建:创建文件)
 *====================================================
 * 类描述：(说明未实现或其它不应生成javadoc的内容)
 */
package com.yuexunit.umeng.push;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.yuexunit.umeng.push.android.AndroidUnicast;
import com.yuexunit.umeng.push.ios.IOSUnicast;

/**
 * @ClassName: PushMessageUtil
 * @Description: TODO(这里用一句话描述这个类的作用)
 * @author chenxy
 * @date 2016年1月13日 下午3:42:42
 */
public class PushMessageUtil {

	private static void sendIOSUnicast(String appKey, String secret, String deviceToken, String title, String content, String type) throws Exception {
		Logger logger = LoggerFactory.getLogger(PushMessageUtil.class);
		
		PushClient client = new PushClient();
		IOSUnicast unicast = new IOSUnicast(appKey, secret);
		unicast.setDeviceToken(deviceToken);
		unicast.setAlert(content);
		unicast.setBadge(1);
		unicast.setSound("default");
		unicast.setProductionMode(); // 生产模式
		unicast.setCustomizedField("title", title);
		unicast.setCustomizedField("type", type);
		logger.info("====================appKey" + appKey);
		logger.info("====================secret" + secret);
		logger.info("====================deviceToken" + deviceToken);
		logger.info("====================title" + title);
		logger.info("====================content" + content);
		logger.info("====================type" + type);
		Boolean result = client.send(unicast);
		logger.info("====================result" + result);
		if (!result) {
			throw new java.lang.IllegalStateException("发送失败");
		}
	}

	private static void sendAndroidUnicast(String appKey, String secret, String deviceToken, String title, String content, String type) throws Exception {
		Logger logger = LoggerFactory.getLogger(PushMessageUtil.class);
		
		PushClient client = new PushClient();
		AndroidUnicast unicast = new AndroidUnicast(appKey, secret);
		unicast.setDeviceToken(deviceToken);
		unicast.setTicker(title);
		unicast.setTitle(title);
		unicast.setText(content);
		unicast.goAppAfterOpen();
		unicast.setDisplayType(AndroidNotification.DisplayType.NOTIFICATION);
		unicast.setProductionMode(); // 生产模式
		unicast.setExtraField("type", type);
		unicast.goActivityAfterOpen("com.rjkj.fingerapproval.MainActivity");
		Boolean result = client.send(unicast);
		logger.info("====================client.send(unicast)" + result);
		if (!result) {
			throw new java.lang.IllegalStateException("发送失败");
		}
	}

	/**
	 * 消息推送
	 * @param appType 应用类型(指尖交易/指尖集卡)
	 * @param deviceToken 设备凭证ID
	 * @param title 推送消息标题
	 * @param content 推送消息内容
	 * @param type 消息类型 1:公告信息(融资项目动态)/2:任务信息(待办) 3:异常通知
	 * @return 
	 */
	public static boolean pushMessage(AppTypeEnum appType, String deviceToken, String title, String content, int type) {
		try {
			if (deviceToken.length() == 44) { // 安卓设备
				sendAndroidUnicast(appType.getAndroidKey(), appType.getAndroidSecret(), deviceToken, title, content, type + "");
			} else if (deviceToken.length() == 64) { // IOS设备
				sendIOSUnicast(appType.getIphoneKey(), appType.getIphoneSecret(), deviceToken, title, content, type + "");
			} else {
				throw new java.lang.IllegalArgumentException("设备识别号非法");
			}
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}

	public static void main(String[] args) {
//		String deviceToken = "ApuNhhkcVgDHWvQJ5Pd7RnjZn8nVB8exS9BgU4WyPVHd";
		String deviceToken = "AiYX9D6Ic4iF6ytyCD1iED81BZJocwig9U78GqV9-avE";
		String title = "通知标题";
		String content = "测试消息";
		int type = 2;
		// 指尖集卡推送
		PushMessageUtil.pushMessage(AppTypeEnum.TALLY, deviceToken, title, content, type);
		// 指尖交易推送
		PushMessageUtil.pushMessage(AppTypeEnum.FINANCE, deviceToken, title, content, type);
	}

}
